﻿using SDE_FIC.DAO;
using SDE_FIC.Models;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using PagedList;

namespace SDE_FIC.Controllers
{
    public class TurmaController : Controller
    {
        private DBConnect _db = new DBConnect();

        //
        // GET: /Turma/

        public ActionResult Index(int? pagina)
        {
            int tamanhoPagina = 10;
            int numeroPagina = pagina ?? 1;

            CursoDAO _cursoDAO = new CursoDAO(ref _db);
            
            TurmaDAO turmasDAO = new TurmaDAO(ref _db);            
            FuncionarioDAO funcionarioDAO = new FuncionarioDAO(ref _db);
            Funcionario _funcionario = new Funcionario();

            var NomeComleto = Session["LogedUserNomeCompleto"].ToString();

            if (Session["LogedUserPerfil"].ToString() == "coordenador")
            {
                List<Turma> lTurma = turmasDAO.All().ToList();
                return View("~/Views/Sistema/Turma/Index.cshtml", lTurma.ToPagedList(numeroPagina, tamanhoPagina));
            }
            else 
            {
                _funcionario.IdFuncionario = funcionarioDAO.LoadByNome(NomeComleto).IdFuncionario;
                List<Turma> lTurma = turmasDAO.LoadByFuncionario(ref _funcionario, true).ToList();
                if (lTurma == null)
                {
                    return View("~/Views/Sistema/Turma/Index.cshtml");
                }
                else {
                    return View("~/Views/Sistema/Turma/Index.cshtml", lTurma.ToPagedList(numeroPagina, tamanhoPagina));
                }
                
            }

        }

        //
        // GET: /Turma/Details/5

        public ActionResult Details(int Id = 0)
        {

            TurmaDAO turmasDAO = new TurmaDAO(ref _db);
            Turma _turma = new Turma();
            _turma = turmasDAO.LoadById(Id);

            if (_turma == null)
            {
                return HttpNotFound();
            }
            return View("~/Views/Sistema/Turma/Details.cshtml", _turma);
        }

        //
        // GET: /Turma/Create

        public ActionResult Create()
        {
            CursoDAO _cursoDAO = new CursoDAO(ref _db);

            FuncionarioDAO _funcionarioDAO = new FuncionarioDAO(ref _db);

            ViewBag.curso_idcurso = new SelectList(_cursoDAO.All(), "idcurso", "cursonome");
            ViewBag.funcionario_idfuncionario = new SelectList(_funcionarioDAO.All(), "idfuncionario", "nomecompleto");
            return View("~/Views/Sistema/Turma/Create.cshtml");
        }

        //
        // POST: /Turma/Create

        [HttpPost]
        public ActionResult Create(Turma turma)
        {
            CursoDAO _cursoDAO = new CursoDAO(ref _db);
            FuncionarioDAO _funcionarioDAO = new FuncionarioDAO(ref _db);

            if (ModelState.IsValid)
            {

                TurmaDAO _turmaDAO = new TurmaDAO(ref _db);
                _turmaDAO.Insert(turma);
                return RedirectToAction("Index");
            }

            ViewBag.curso_idcurso = new SelectList(_cursoDAO.All(), "idcurso", "cursonome", turma.Curso.IdCurso);
            ViewBag.funcionario_idfuncionario = new SelectList(_funcionarioDAO.All(), "idfuncionario", "nomecompleto", turma.Funcionario.IdFuncionario); 
            return View("~/Views/Sistema/Turma/Create.cshtml", turma);
        }

        //
        // GET: /Turma/Edit/5

        public ActionResult Edit(int id = 0)
        {
            TurmaDAO _turmasDAO = new TurmaDAO(ref _db);
            Turma _turma = new Turma();
            _turma = _turmasDAO.LoadById(id);

            CursoDAO _cursoDAO = new CursoDAO(ref _db);

            FuncionarioDAO _funcionarioDAO = new FuncionarioDAO(ref _db);

            if (_turma == null)
            {
                return HttpNotFound();
            }
            ViewBag.data_inicio = _turma.DataInicio;
            ViewBag.curso_idcurso = new SelectList(_cursoDAO.All().ToList(), "idcurso", "cursonome", _turma.Curso.IdCurso);
            ViewBag.funcionario_idfuncionario = new SelectList(_funcionarioDAO.All().ToList(), "idfuncionario", "nomecompleto", _turma.Funcionario.IdFuncionario);
            
            return View("~/Views/Sistema/Turma/Edit.cshtml", _turma);
        }

        //
        // POST: /Turma/Edit/5

        [HttpPost]
        public ActionResult Edit(Turma turma)
        {
            CursoDAO _cursoDAO = new CursoDAO(ref _db);

            FuncionarioDAO _funcionarioDAO = new FuncionarioDAO(ref _db);

            TurmaDAO _turmasDAO = new TurmaDAO(ref _db);
            Turma _turma = new Turma();

            if (ModelState.IsValid)
            {
                _turmasDAO.Update(turma);
                return RedirectToAction("Index");
            }
            ViewBag.curso_idcurso = new SelectList(_cursoDAO.All().ToList(), "idcurso", "cursonome", _turma.Curso.IdCurso);
            ViewBag.funcionario_idfuncionario = new SelectList(_funcionarioDAO.All().ToList(), "idfuncionario", "nomecompleto", _turma.Funcionario.IdFuncionario);
            
            return View("~/Views/Sistema/Turma/Edit.cshtml", turma);
        }

        //
        // GET: /Turma/Delete/5

        public ActionResult Delete(int id = 0)
        {
            TurmaDAO _turmaDAO = new TurmaDAO(ref _db);
            Turma _turma = new Turma();


            _turma = _turmaDAO.LoadById(id);

            if (_turma == null)
            {
                return HttpNotFound();
            }
            return View("~/Views/Sistema/Turma/Delete.cshtml", _turma);
        }

        //
        // POST: /Turma/Delete/5

        [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(Turma turma)
        {
            TurmaDAO _turmaDAO = new TurmaDAO(ref _db);
            Turma _turma = new Turma();

            CursoDAO _cursoDAO = new CursoDAO(ref _db);

            FuncionarioDAO _funcionarioDAO = new FuncionarioDAO(ref _db);

            if (ModelState.IsValid)
            {
                _turmaDAO.Delete(turma);
                return RedirectToAction("Index");
            }

            ViewBag.curso_idcurso = new SelectList(_cursoDAO.All().ToList(), "idcurso", "cursonome", _turma.Curso.IdCurso);
            ViewBag.funcionario_idfuncionario = new SelectList(_funcionarioDAO.All().ToList(), "idfuncionario", "nomecompleto", _turma.Funcionario.IdFuncionario);

            return View("~/Views/Sistema/Turma/Delete.cshtml", turma);
        }

        //protected override void Dispose(bool disposing)
        //{
        //    //db.Dispose();
        //    //base.Dispose(disposing);
        //}
    }
}